/**	
 * <br>
 * Copyright 2013 IFlyTek. All rights reserved.<br>
 * <br>			 
 * Package: com.iflytek.utils <br>
 * FileName: ResultUtil.java <br>
 * <br>
 * @version
 * @author hyzha@iflytek.com
 * @created 2013-3-21
 * @last Modified 
 * @history
 */

package com.maq.base.utils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.iflytek.blog.base.utils.dto.ResultDto;

/**
 * 结果构造工具
 * 
 * @author hyzha@iflytek.com
 */

public class ResultUtil {

	/**
	 * 成功
	 */
	public static final String TRUE = "true";

	/**
	 * 失败
	 */
	public static final String FALSE = "false";

	/**
	 * 
	 * 封装成功消息
	 * 
	 * @param result
	 *            消息
	 * @return
	 * @author hyzha
	 * @created 2014年9月2日 下午4:14:22
	 * @lastModified
	 * @history
	 */
	public static ResultDto success(String result) {
		ResultDto dto = new ResultDto();
		dto.setFlag(TRUE);
		dto.setResult(result);
		return dto;
	}

	/**
	 * 
	 * 封装失败消息
	 * 
	 * @param result
	 *            消息
	 * @return
	 * @author hyzha
	 * @created 2014年9月2日 下午4:15:12
	 * @lastModified
	 * @history
	 */
	public static ResultDto fail(String result) {
		ResultDto dto = new ResultDto();
		dto.setFlag(FALSE);
		dto.setResult(result);
		return dto;
	}

	/**
	 * 封装成功消息
	 * 
	 * @param result
	 *            消息结果
	 * @param data
	 *            需要返回的数据
	 * @return 结果对象
	 * @created 2014年9月5日 下午2:23:49
	 * @lastModified
	 * @history
	 */
	public static ResultDto success(String result, Object data) {
		return new ResultDto(TRUE, result, data);
	}

	public static ResultDto success(Object data) {
		return new ResultDto(TRUE, data);
	}

	/**
	 * 封装失败消息
	 * 
	 * @param result
	 *            消息结果
	 * @param data
	 *            需要返回的数据
	 * @return 结果对象
	 * @author ycli7
	 * @created 2014年9月5日 下午2:24:04
	 * @lastModified
	 * @history
	 */
	public static ResultDto fail(String result, Object data) {
		return new ResultDto(FALSE, result, data);
	}

	/**
	 * 
	 * 返回json格式
	 * 
	 * @param flag
	 *            返回结果状态
	 * @param result
	 *            结果
	 * @return json str
	 * @author hyzha@iflytek.com
	 * @created 2013-3-21 上午09:56:01
	 * @lastModified
	 * @history
	 */
	private static String jsonResult(String flag, String result) {
		return "{\"returnFlag\":" + flag + ",\"data\":\"" + result + "\"}";
	}

	/**
	 * 
	 * 返回json格式
	 * 
	 * @param result
	 * @return
	 * @author hyzha
	 * @created 2014年9月2日 下午4:16:34
	 * @lastModified
	 * @history
	 */
	private static String jsonResult(ResultDto result) {
		return "{\"returnFlag\":" + result.getFlag() + ",\"data\":\"" + result.getResult() + "\",\"returnData\":\""
				+ result.getData() + "\"}";
	}



	/**
	 * 
	 * 回复结果到页面ajax请求
	 * 
	 * @param response
	 *            回执消息
	 * @param result
	 *            结果
	 * @author hyzha@iflytek.com
	 * @created 2013-4-3 上午09:52:24
	 * @lastModified
	 * @history
	 */
	public static void sendResult(HttpServletResponse response, String flag, String result) {
		WebUtils.sendDirectToClient(response, WebUtils.CONTENTTYPE_TEXTHTML, WebUtils.CONTENT_CHARSET_UTF8,
				jsonResult(flag, result));
	}

	/**
	 * 
	 * 回复结果到页面ajax请求
	 * 
	 * @param response
	 * @param result
	 * @author hyzha
	 * @created 2014年9月2日 下午4:17:29
	 * @lastModified
	 * @history
	 */
	public static void sendResult(HttpServletResponse response, ResultDto result) {
		WebUtils.sendDirectToClient(response, WebUtils.CONTENTTYPE_TEXTHTML, WebUtils.CONTENT_CHARSET_UTF8,
				jsonResult(result));
	}

	/**
	 * 
	 * 回复结果到页面ajax请求
	 * 
	 * @param response
	 *            回执消息
	 * @param result
	 *            结果
	 * @author xmzhu2
	 * @created 2013-4-15 下午3:51:09
	 * @lastModified
	 * @history
	 */
	public static void sendString(HttpServletResponse response, String result) {
		WebUtils.sendDirectToClient(response, WebUtils.CONTENTTYPE_TEXTHTML, WebUtils.CONTENT_CHARSET_UTF8, result);
	}

	/**
	 * 
	 * 回复消息到页面ajax请求
	 * 
	 * @param response
	 *            回执对象
	 * @param msg
	 *            消息
	 * @author hyzha@iflytek.com
	 * @created 2013-4-3 上午09:54:04
	 * @lastModified
	 * @history 2014-08-07 msg -> jsonResult(msg) modify by jnli2
	 */
	public static void sendMsg(HttpServletResponse response, String flag, String msg) {
		WebUtils.sendDirectToClient(response, WebUtils.CONTENTTYPE_TEXTJSON, WebUtils.CONTENT_CHARSET_UTF8,
				jsonResult(flag, msg));
	}

	/**
	 * 
	 * 回复消息到页面ajax请求
	 * 
	 * @param response
	 * @param dto
	 * @author hyzha
	 * @created 2014年9月2日 下午4:18:09
	 * @lastModified
	 * @history
	 */
	public static void sendMsg(HttpServletResponse response, ResultDto dto) {
		WebUtils.sendDirectToClient(response, WebUtils.CONTENTTYPE_TEXTJSON, WebUtils.CONTENT_CHARSET_UTF8,
				jsonResult(dto));
	}

	/**
	 * 
	 * 回复列表
	 * 
	 * @param response
	 *            回执对象
	 * @param list
	 *            列表
	 * @author hyzha@iflytek.com
	 * @created 2013-4-3 上午10:05:37
	 * @lastModified
	 * @history
	 */
	public static void sendList(HttpServletResponse response, List list) {
		WebUtils.sendDirectToClient(response, WebUtils.CONTENTTYPE_TEXTJSON, WebUtils.CONTENT_CHARSET_UTF8,
				JSONArray.toJSONString(list));
	}

	/**
	 * 
	 * 回复对象
	 * 
	 * @param response
	 *            回执对象
	 * @param obj
	 *            对象
	 * @author hyzha@iflytek.com
	 * @created 2013-4-3 上午10:16:09
	 * @lastModified
	 * @history
	 */
	public static void sendObject(HttpServletResponse response, Object obj) {
		WebUtils.sendDirectToClient(response, WebUtils.CONTENTTYPE_TEXTJSON, WebUtils.CONTENT_CHARSET_UTF8,
				JSONArray.toJSONString(obj).toString());
	}

	/**
	 * 
	 * 回复对象
	 * 
	 * @param response
	 *            回执对象
	 * @param obj
	 *            对象
	 * @author hyzha@iflytek.com
	 * @created 2013-4-3 上午10:16:09
	 * @lastModified
	 * @history
	 */
	public static void sendObjectText(HttpServletResponse response, Object obj) {
		WebUtils.sendDirectToClient(response, WebUtils.CONTENTTYPE_TEXTHTML, WebUtils.CONTENT_CHARSET_UTF8,
				JSONObject.toJSONString(obj).toString());
	}

	
	
	/**
	 * 
	 * 回复MAP
	 * 
	 * @param response
	 * @param map
	 * @author hyzha
	 * @created 2014年9月2日 下午4:18:47
	 * @lastModified
	 * @history
	 */
	public static void sendMap(HttpServletResponse response, Map map) {
		WebUtils.sendDirectToClient(response, WebUtils.CONTENTTYPE_TEXTJSON, WebUtils.CONTENT_CHARSET_UTF8,
				JSONObject.toJSONString(map).toString());
	}

	/**
	 * 
	 * 回复HTML列表
	 * 
	 * @param response
	 * @param list
	 * @author hypan
	 * @created 2015年2月8日 下午3:57:24
	 * @lastModified
	 * @history
	 */

	@SuppressWarnings("rawtypes")
	public static void sendHTMLList(HttpServletResponse response, List list) {
		WebUtils.sendDirectToClient(response, WebUtils.CONTENTTYPE_TEXTHTML, WebUtils.CONTENT_CHARSET_UTF8,
				JSONArray.toJSONString(list).toString());
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static void sendListJson(HttpServletResponse response, String flag, String message, List list) {
		Map map = new HashMap();
		map.put("returnFlag", flag);
		map.put("data", message);
		map.put("returnData", JSONArray.toJSONString(list));
		WebUtils.sendDirectToClient(response, WebUtils.CONTENTTYPE_TEXTHTML, WebUtils.CONTENT_CHARSET_UTF8,
				JSONObject.toJSONString(map).toString());
	}

}
